Processor-based systems, such as personal computers, servers, laptop computers, personal digital assistants (PDAs) and other processor-based devices, such as “smart” phones, game consoles, set-top boxes and others, may be multiprocessor or multi-core systems. For example, an Intel® architecture processor in such a system may have two, four or some other number of cores. Such multiprocessor or multi-core systems are generally referred to as many core systems in the following.
Many processor-based systems incorporate a specific or special-purpose graphics device such as a graphics processing unit in order to reduce the processing load on the central processing unit or processor for graphics related computation. Typically a component of the operating system, such as, for example, a Microsoft Windows operating system, provides an interface to such a graphics device or GPU termed a graphics driver. Often, a standard application programming interface (API) is provided by various different kinds of graphics drivers. Of the possible functionality provided by the API, not all may be implemented on a specific platform. This may depend in part on the capabilities of the GPU installed on the platform. For example, a GPU provider may provide a single driver for various GPUs that are manufactured by the provider. However the graphics driver may or may not provide a specific functionality depending on whether the underlying GPU supports that functionality. Typically, integrated graphics hardware is often provided on platforms where cost saving is a predominant design consideration, and thus the performance and capabilities of integrated graphics hardware is not at the same level as dedicated graphics GPUs that are provided on for more expensive platforms. Therefore, especially in a situation where a platform provides only integrated graphics hardware, it may be desirable to augment the performance and/or capabilities of the graphics on the platform where possible.
Generally the graphics driver or device driver for the GPU advertises in some standardized way the specific types of hardware acceleration available on the GPU. When the graphics driver receives a call to perform a particular operation, the driver translates that call into a specific command or commands that are then executed by the GPU. Other functionality provided by the graphics driver may include configuring or setting up the GPU to be compatible with graphics hardware such as a monitor or a display device. Other layers of the software stack may be involved in accessing and programming the GPU. For example, the operating system (OS) may regulate and mediate access to the hardware as well. Finally, an application itself may query the hardware for its capabilities through either the operating system or through the graphics driver depending on the specific implementation.